闲话 22.12.14

闲话

啊啊啊数数题的式子和含义怎么也对不上啊啊啊
有好心人给我具体讲讲他在说啥吗?

感觉最近这两天的闲话比较低质量
在我啃明白这个前不是很可能高质量(

翻旧闲话好像看到 CF1515E 能代数工业 O(nlogn)
求大佬浇浇

杂题

星际竞速

感觉这题挺刻意的。

每个星球恰好经过一次:拆出入点,点间连边 1 流量,0 费用
空间跳跃:源点跳跃到每个星球流量是 1,费用是跳跃的费用,每个星球都能直接跳到汇点,费用是 0
高速航行:直接连边就行。
建完边跑最小费用最大流即可。

挺板的一题的。注意 u<v,要不然你连样例都过不去。

code
int M, s, t, n, m, t1, t2, t3, t4;

signed main() {
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    cin >> n >> m;
    M = n * 2; 
    s = ++ M, t = ++ M;
    rep(i,1,n) cin >> t1, adde(s, (i << 1) - 1, 1, t1);
    rep(i,1,n) adde(s, (i << 1), 1, 0), adde((i << 1) - 1, t, 1, 0);
    rep(i,1,m) {
        cin >> t1 >> t2 >> t3; if (t1 > t2) swap(t1, t2);
        adde(t1 << 1, (t2 << 1) - 1, 1, t3);
    } 
    Dinic(s, t);
    cout << min_cost << '\n';
}



狼抓兔子

一眼最小割模型。但是数据加强一点你的多路增广 Dinic 就过不去了。因此考虑最小割的含义。

这是个平面图,因此最小割退化,我们可以用一条曲线穿过极多的最小割对应边的中点,这条曲线将整张图分为两部分。同样的,这条曲线是从左下到右上穿过平面图时所穿过的边权的最小值。这让我们想到最短路。
引入对偶图概念。我们将图上每个面构成一个点,点间的边是原图的边顺时针旋转 90° 得到的边。以左下角和右上角的无限大平面为源汇点,我们跑最短路就能得到答案。

听说很恶心?所以没实现。海拔我写了。



志愿者招募

挺好玩的一道题欸。

费用流比较一眼。然后我们 s12n+1t 顺次连起来,ii+1infai 流,0 费用的边,起点终点都连 inf0 费的边。
然后是招人。招人 [l,r,w]lr+1infw 费的边。
看懂为啥都要连边权那么大的边了吗?最大流所以肯定 inf 是要跑满的,但是想不花钱跑到 inf 是不可能的,这就转化成了经典费用流了,正确性显然。

“但这并不是我的特长!”

Bonus :  如何从线性规划的角度考虑本题?

code
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,s,t) for (register int i = (s), i##_ = (t) + 1; i < i##_; ++ i)
#define pre(i,s,t) for (register int i = (s), i##_ = (t) - 1; i > i##_; -- i)
int M, s, t, n, m, t1, t2, t3, t4;
const int N = 1e6, inf = 1e18;

signed main() {
	cin >> n >> m;
    M = n + 1; s = ++ M, t = ++ M;
    adde(s, 1, inf, 0);
    rep(i,1,n) cin >> t1, adde(i, i + 1, inf - t1, 0);
    adde(n + 1, t, inf, 0);
    rep(i,1,m) cin >> t1 >> t2 >> t3, adde(t1, t2 + 1, inf, t3);
    Dinic(s, t);
    cout << min_cost << endl;
}
posted @   joke3579  阅读(87)  评论(4编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示